package com.chinacache.maint.workorder.action;

import java.util.ArrayList;
import java.util.List;

import com.chinacache.maint.commons.entity.BaseEntity;
import com.chinacache.maint.commons.orm.hibernate.Page;
import com.chinacache.maint.commons.web.struts2.CRUDActionSupport;
import com.chinacache.maint.workorder.entity.Field;
import com.chinacache.maint.workorder.entity.FieldAttribute;
import com.chinacache.maint.workorder.service.FieldAttributeManager;
import com.chinacache.maint.workorder.service.FieldManager;

@SuppressWarnings("serial")
public class FieldAttributeAction extends CRUDActionSupport<FieldAttribute> {
	private FieldAttributeManager fieldAttributeManager;
	private FieldManager fieldManager;
	private FieldAttribute entity;
	private Integer id;
	private Page<FieldAttribute> page = new Page<FieldAttribute>();
	private Integer fieldId;
	private Integer fieldAttributeId[];

	private String condition;

	@Override
	public String delete() throws Exception {
		if (entity.getFlowFieldAttributes().size() > 0) {
			this.msg = "该属性已经加入流程且录入数据，不允许删除！";
		} else {
			fieldAttributeManager.deleteFieldAttribute(id);
		}
		return list();
	}

	@Override
	public FieldAttribute getModel() {
		return entity;
	}

	@Override
	public Page<FieldAttribute> getPage() {
		return page;
	}

	@Override
	public String list() throws Exception {
		page = fieldAttributeManager.getAllFieldAttribute(page, fieldId);
		System.out.println(page.getTotalCount());
		return SUCCESS;
	}

	public String group() throws Exception {
		Integer groupId = fieldAttributeManager.getFieldAttribute(
				fieldAttributeId[0]).getId();
		for (int i = 0; i < fieldAttributeId.length; i++) {
			FieldAttribute fieldAttribute = fieldAttributeManager
					.getFieldAttribute(fieldAttributeId[i]);
			fieldAttribute.setGroupId(groupId);
			fieldAttributeManager.updateFieldAttribute(fieldAttribute);
		}
		return list();
	}

	public String checkboxLink() throws Exception {
		Integer groupId = fieldAttributeManager.getFieldAttribute(
				fieldAttributeId[0]).getId();
		List<FieldAttribute> updateList = new ArrayList<FieldAttribute>();
		for (int i = 0; i < fieldAttributeId.length; i++) {
			FieldAttribute fieldAttribute = fieldAttributeManager
					.getFieldAttribute(fieldAttributeId[i]);
			if (fieldAttribute.getType() == BaseEntity.FIELD_TYPE_RADIO) {
				System.out.println(fieldAttribute.getName()
						+ fieldAttribute.getType());
				updateList.add(fieldAttribute);
			} else {
				this.msg = "只能选择单选类型，请重新选择";
				return list();
			}
		}
		for (FieldAttribute fieldAttribute : updateList) {
			System.out.println("dddddddddddd=" + fieldAttribute.getId());
			fieldAttribute.setCheckBoxLink(groupId);
			fieldAttributeManager.updateFieldAttribute(fieldAttribute);
		}
		return list();
	}

	@Override
	public void prepare() throws Exception {
		if (id != null) {
			entity = fieldAttributeManager.getFieldAttribute(id);
		} else {
			entity = new FieldAttribute();
		}
	}

	@Override
	public String save() throws Exception {
		Field field = fieldManager.getField(fieldId);
		entity.setField(field);
		fieldAttributeManager.saveFieldAttribute(entity);
		entity.setGroupId(entity.getId());
		fieldAttributeManager.saveFieldAttribute(entity);
		return list();
	}

	public void setFieldAttributeManager(
			FieldAttributeManager fieldAttributeManager) {
		this.fieldAttributeManager = fieldAttributeManager;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public void setCondition(String condition) {
		this.condition = condition;
	}

	public String getCondition() {
		return condition;
	}

	public Integer getFieldId() {
		return fieldId;
	}

	public void setFieldId(Integer fieldId) {
		this.fieldId = fieldId;
	}

	public void setFieldManager(FieldManager fieldManager) {
		this.fieldManager = fieldManager;
	}

	public Integer[] getFieldAttributeId() {
		return fieldAttributeId;
	}

	public void setFieldAttributeId(Integer[] fieldAttributeId) {
		this.fieldAttributeId = fieldAttributeId;
	}

}
